package com.zy.ems.common.page;

import java.io.Serializable;

import org.springframework.util.Assert;

/**
 * 分页查询对象。
 * 
 * @author Luffy
 */
public class PageQuery implements Serializable {
    private static final long serialVersionUID = -7563647757977471889L;

    /**
     * 默认分页大小
     */
    public static final int DEFAULT_PAGE_SIZE = 10;

    /* 此处将页码和偏移量定义为Integer而不是int是为了判断以哪个参数进行分页 */
    /**
     * 页码
     */
    private Integer page;

    /**
     * 偏移量
     */
    private Integer offset;

    /**
     * 分页大小
     */
    private Integer pageSize = DEFAULT_PAGE_SIZE;

    PageQuery() {
    }

    /**
     * 指定页码和分页大小。
     * 
     * @param page
     * @param pageSize
     */
    public PageQuery(int page, int pageSize) {
        Assert.isTrue(pageSize > 0);
        this.page = page;
        this.pageSize = pageSize;
        this.offset = (page - 1) * pageSize;
    }

    public Integer getPage() {
        return page;
    }

    /**
     * 设置页码并计算偏移。
     * 
     * @param page
     */
    void setPage(int page) {
        this.page = page;
    }

    public Integer getOffset() {
        return offset;
    }

    /**
     * 设置页偏移并计算页码。
     * 
     * @param offset
     */
    void setOffset(int offset) {
        this.offset = offset;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    void setPageSize(int pageSize) {
        Assert.isTrue(pageSize > 0, "分页大小不能为" + pageSize);
        this.pageSize = pageSize;
    }

    @Override
    public String toString() {
        return "page:" + page + ",pageSize:" + pageSize;
    }

}
